1. Technical Field
The present invention relates to management and control of resources in a computing system. More particularly, the invention concerns efficiently retrieving information concerning system resources such as storage resources.
2. Description of Related Art
Modern computing systems commonly include servers, storage systems, and other devices. Management and modeling programs are often used to manage the devices in computing systems.
Storage Management Initiative Specification (SMI-S)/Bluefin, and Common Information Model (CIM) technologies, are widely used for managing storage devices and storage environments. The SMI-S is a standard management interface that allows different classes of hardware and software products to interoperate for monitoring and controlling resources. For example, the SMI-S permits storage management systems to identify, classify, monitor, and control physical and logical resources in a SAN. The SMI-S is based on CIM, and Web-Based Enterprise Management (WBEM) architecture. CIM is a model for describing management information, and WBEM is an architecture for using Internet technologies to manage systems and networks. The SMI-S uses CIM to define objects that represent storage entities such as Volumes, Disks, Storage SubSystems, Switches, and host Computer Systems. (In many, but not all cases, the term “volume” is interchangeable with the term “Logical Unit Number” (LUN).) CIM also defines the associations that may or may not exist between these objects, such as a Disk being associated to a Storage SubSystem because it physically resides in the Storage SubSystem.
The CIM Objects mentioned above may be managed by a CIM Object Manager (CIMOM), also known as a CIM Server. A storage management software application, such as IBM Tivoli Storage Resource Manager (ITSRM), can use a CIM Client to connect to a CIMOM, to retrieve information about the storage entities that the CIMOM manages, and also to perform active configuration of the storage entities. Storage management software that uses a CIM Client may be called a CIM Client Application.
CIM Client Applications use a CIM Client API (Application Programming Interface) to communicate with a remote CIMOM. There are several CIM Client APIs available (SNIA, Pegasus, Java WBEM Services), and they all are similar in that the methods available to the CIM Client Application deal with the use of meta-data. CIM Client APIs include methods for the following common tasks:                Get all instances of a certain CIM_Class                    Example: Get all ComputerSystems            Example: Get all Hosts                        Get associated entities given a certain entity                    Example: Get All StorageVolumes that are defined in a specific Disk Array StorageSystem            Example: Get the StoragePool that a particular StorageVolume is allocated from.                        
Using the CIM Client API to obtain commonly needed information from the CIMOM typically requires an excessive number of steps. As an example, Disk Array Storage Systems are modeled as ComputerSystems. The ComputerSystem's Dedicated property is used to identify the ComputerSystem as a Switch, Host, Disk Array System, or some other type of computer system. In addition, certain Disk Array information, such as Location, Model, and ProductID, are not modeled as properties of a Disk Array ComputerSystem, but rather as properties of objects associated to the ComputerSystem. Thus, to enumerate all Disk Array Systems and to get complete information about their properties, the following elaborate process is required:    1. Enumerate instances of Computer Systems;    2. Check each ComputerSystem's Dedicated property to identify if it is a Disk Array System;    3. Get the pertinent properties of the Disk Array Computer System, such as Name, Description, and Status;    4. Get the associated PhysicalPackage object;    5. Get the Product object that is associated to the PhysicalPackage object;    6. Get the pertinent properties from the Product object, such as Name, Version, and Vendor;    7. Get the Location object that is associated to the PhysicalPackage object; and    8. Get the pertinent location information from the Location object.Thus, this process requires an overly complex set of steps to discover and get the properties of Disk Array Computer Systems.
Additionally, when using the CIM Client API, it is not possible to get information about a top-level entity and all of its components in one step. Component entities are modeled as separate objects, so an extra step is required to get information for each additional type of component object that the CIM Client Application is interested in. To get information about a Disk Array System and information about a specific subset of its components (Volumes, Storage Pools, FCPorts), the CIM Client must perform the following operations:    1. Get information about the Disk Array System as described above;    2. Get the associated StorageVolume objects through SystemDevice associations;    3. Get the associated StoragePool objects through HostedStoragePool associations; and    4. Get the associated FCPort (Fibre Channel Port) objects through SystemDevice associations.Thus, the process for obtaining information about a Disk Array System and its components is overly complex.
In summary, known methods for using CIM Client Applications to obtain information pertaining to a single storage entity that may be distributed through several objects in the CIM/SMIS model, are complex and require too many steps. Additionally, known methods for CIM Client Applications to obtain a top-level object and all of its components are excessively difficult. Further, with known methods, CIM Client Applications are unable to easily retrieve a complete view of a top level object and its components, because WBEM (or CIM-XML) only allows for requests for targeted pieces of information.